﻿using System;
using System.Collections.Generic;
using System.Globalization;
using Microsoft.QualityTools.Testing.Fakes;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace Alfa.Common.UnitTests {
	[TestClass]
	public class ValidationRulesTest {

		List<object> TestDataNumeric;
		List<object> TestDataText;
		List<object> TestDataDate;
		List<object> TestDataTime;

		[TestInitialize]
		public void Initialize( ) {
			this.TestDataNumeric = new List<object>( );
			this.TestDataNumeric.Add((sbyte)2);
			this.TestDataNumeric.Add((byte)2);
			this.TestDataNumeric.Add((short)2);
			this.TestDataNumeric.Add((ushort)2);
			this.TestDataNumeric.Add((int)2);
			this.TestDataNumeric.Add((uint)2);
			this.TestDataNumeric.Add((long)2);
			this.TestDataNumeric.Add((ulong)2);
			this.TestDataNumeric.Add((char)2);
			this.TestDataNumeric.Add((float)2);
			this.TestDataNumeric.Add((double)2);
			this.TestDataNumeric.Add((decimal)2);
			this.TestDataNumeric.Add((string)"2");
			this.TestDataNumeric.Add((sbyte)12);
			this.TestDataNumeric.Add((byte)12);
			this.TestDataNumeric.Add((short)12);
			this.TestDataNumeric.Add((ushort)12);
			this.TestDataNumeric.Add((int)12);
			this.TestDataNumeric.Add((uint)12);
			this.TestDataNumeric.Add((long)12);
			this.TestDataNumeric.Add((ulong)12);
			this.TestDataNumeric.Add((char)12);
			this.TestDataNumeric.Add((float)12);
			this.TestDataNumeric.Add((double)12);
			this.TestDataNumeric.Add((decimal)12);
			this.TestDataNumeric.Add((string)"12");
			this.TestDataNumeric.Add((sbyte)32);
			this.TestDataNumeric.Add((byte)32);
			this.TestDataNumeric.Add((short)32);
			this.TestDataNumeric.Add((ushort)32);
			this.TestDataNumeric.Add((int)32);
			this.TestDataNumeric.Add((uint)32);
			this.TestDataNumeric.Add((long)32);
			this.TestDataNumeric.Add((ulong)32);
			this.TestDataNumeric.Add((char)32);
			this.TestDataNumeric.Add((float)32);
			this.TestDataNumeric.Add((double)32);
			this.TestDataNumeric.Add((decimal)32);
			this.TestDataNumeric.Add((string)"32");
		}

		[TestMethod]
		public void DateTimeValidationRule( ) {
			var instance = new Alfa.Common.ValidationRules.DateTimeValidationRule( );
			instance.Validate(null, null);
		}
		[TestMethod]
		public void DateValidationRule( ) {
			var instance = new Alfa.Common.ValidationRules.DateValidationRule( );
			instance.Validate(null, null);
		}
		[TestMethod]
		public void DecimalValidationRule( ) {
			var instance = new Alfa.Common.ValidationRules.DecimalRangeValidationRule( );
			instance.Validate(null, null);
		}
		[TestMethod]
		public void NumericRangeValidationRule( ) {
			var instance = new Alfa.Common.ValidationRules.NumericRangeValidationRule( );
			foreach (var value in this.TestDataNumeric) {
				instance.Validate(value, null);
				instance.Validate(value, CultureInfo.CurrentCulture);
			}
		}
		[TestMethod]
		public void PercentValidationRule( ) {
			var instance = new Alfa.Common.ValidationRules.PercentValidationRule( );
			instance.Validate(null, null);
		}
		[TestMethod]
		public void PeselValidationRules( ) {
			var instance = new Alfa.Common.ValidationRules.PeselValidationRule( );
			instance.Validate(null, null);
		}
		[TestMethod]
		public void StringFormatValidationRule( ) {
			var instance = new Alfa.Common.ValidationRules.StringFormatValidationRule( );
			instance.Validate(null, null);
		}
		[TestMethod]
		public void StringGramarValidationRule( ) {
			var instance = new Alfa.Common.ValidationRules.StringGramarValidationRule( );
			instance.Validate(null, null);
		}
		[TestMethod]
		public void StringLengthValidationRule( ) {
			var instance = new Alfa.Common.ValidationRules.StringLengthValidationRule( );
			instance.Validate(null, null);
		}
		[TestMethod]
		public void StringRegexValidationRule( ) {
			var instance = new Alfa.Common.ValidationRules.StringRegexValidationRule( );
			instance.Validate(null, null);
		}
		[TestMethod]
		public void TimeValidationRule( ) {
			var instance = new Alfa.Common.ValidationRules.TimeValidationRule( );
			instance.Validate(null, null);
		}
		[TestMethod]
		public void TypeValidationRule( ) {
			var instance = new Alfa.Common.ValidationRules.TypeValidationRule( );
			instance.Validate(null, null);
		}
	}
}
